#ifndef __MOTOR_BASE_H__
#define __MOTOR_BASE_H__

enum MotorDirection {
    DIRECTION_0,
    DIRECTION_1
};

enum MotorModeSwitch {
    MODE_OFF,
    MODE_ON
};

class MotorBase {
protected:
    double angle_ = 0.0;                        // 转动角度（度）
    double speed_ = 0.0;                        // 转动速度（度/s）
    double run_time_ = 0.0;                     // 转动时间（s）
    int resolution_level_ = 0;                  // 转动精度（细分）
    bool direction_ = DIRECTION_0;              // 转动方向
    bool infinity_mode_ = MODE_OFF;             // 无限转动

    const double gear_ratio_;                   // 齿轮减速比
    const int motor_id_;                        // 电机ID

public:
    MotorBase(int motor_id, double gear_ratio) : motor_id_(motor_id), gear_ratio_(gear_ratio) {}

    virtual int run() = 0;
    virtual int stop() = 0;
};



#endif